// backend/src/config/redisClient.js
import redis from "redis";
import yaml from "js-yaml";
import fs from "fs";

// 读取配置文件
const config = yaml.load(fs.readFileSync('./src/application.yaml', 'utf8'));
const dbRedis = config.redis;

class RedisClient {
    constructor() {
        // 创建 Redis 客户端
        this.client = redis.createClient({
            url: `redis://${dbRedis.host}:${dbRedis.port}`, // 从配置文件中获取 Redis 服务器地址和端口
            // 如果需要，可以添加其他选项，例如：
            // password: dbRedis.password, // 如果 Redis 设置了密码
            // legacyMode: true              // 使用旧版模式（可选）
        });

        // 处理错误事件
        this.client.on('error', (err) => {
            console.error('Redis Client Error', err);
        });

        this.connect(); // 连接到 Redis
    }

    async connect() {
        try {
            await this.client.connect(); // 连接到 Redis
            console.log('Connected to Redis');
        } catch (error) {
            console.error('Could not connect to Redis', error);
        }
    }

    // 设置键值对
    async set(key, value) {
        await this.client.set(key, value);
    }

    // 获取键的值
    async get(key) {
        return await this.client.get(key);
    }

    // 删除键
    async del(key) {
        await this.client.del(key);
    }

    // 断开连接
    async quit() {
        await this.client.quit(); // 断开与 Redis 的连接
    }
}


// 导出 Redis 客户端实例
export default new RedisClient();
